Spring-boot JPA 이용하기

spring boot JPA 기본 설정이 끝났으면 실제 DB를 불러와 데이터를 조회 해보자

먼저 해야할 일은 properties 파일에 설정을 추가해주는 것이다.

resource 폴더 하위에 보면 application.properties 파일이 기본적으로 생성되어있을 것이다.

개인적으로 properties 형식 보단 yml을 선호하여 yml 파일 기준으로 설정셋팅법을 알아보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
spring:
profiles:
active: dev
driver-class-name: org.postgresql.Driver

---
spring:
profiles: dev
datasource:
url: jdbc:postgresql://localhost:5432/test
username: test
password: test123
jpa:
show-sql: true

위와 같이 접속할 데이터베이스 정보를 적어주고 jpa를 이용하여 쿼리를 호출할때 로그상에 SQL형식으로 출력되도록 jpa 설정도 추가해준다.

다음으로 Repository 인터페이스를 생성하여 DB Table에 접근하도록 한다.

적당한 위치에 인터페이스를 생성하면 되는데 “CrudRepository” 를 상속받도록한다.

CrudRepository 의 parameter는 table entity , primary key type 을 넣어준다.

그리고 조회하고자 하는 조건의 컬럼명으로 조회 method를 하나 생성하면되는데 phone 컬럼을 이용해서 데이터를 조회한다고 가정했을 경우 findBy[Column 명] 을 넣어주면 된다. 메소드명을 만들때는 Camel 표기법에 의거해 컬럼 앞글자는 대문자로 써주면 된다.

1
2
3
4
5
6
7
8
9
create table osj_book
(
id serial not null,
age varchar(255),
name varchar(255),
phone integer not null
constraint osj_book_phone_pk
primary key
);
1
2
3
4
5
6
7
8
9
10
11
12
13
package com.osj.Demo1.JPADemo.Repo;

import com.osj.Demo1.JPADemo.Entity.OsjBookEntity;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface OsjBookRepository extends CrudRepository<OsjBookEntity,String> {
List<OsjBookEntity> findByPhone(String name);

}

Repository 인터페이스까지 만들었으면 데이터를 조회해볼 차례이다.

조회는 Junit Test를 이용해 진행해보자.

test 폴더 하위에 생성된 ~Tests.java 파일을 열어 몇가지 Annontaion을 추가해줘야한다.

  • @RunWith(SpringRunner.class) : SpringJUnit4ClassRunner에 대한 정보를 담고 있다.
  • @DataJpaTest : JPA 테스트를 진행
  • @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) : properties에 설정된 DB와 연동
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@RunWith(SpringRunner.class)
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
public class JpaDemoApplicationTests {

@Autowired
OsjBookRepository osjBookRepository;

@Test
public void contextLoads() {

List<OsjBookEntity> osjBookEntities = osjBookRepository.findByPhone("010");

System.out.println(osjBookEntities.size());
}

}

이렇게 junit 테스트 모델을 만든후 실행을 하면 JPA를 통해 table entity가 만들어지고 table이 객체화 되어 사용되어질수 있다.

공유하기